本文运用上文中多维随机变量分布转换规律,来推导出PBRT中一系列重要结论
极坐标与笛卡尔坐标
已知p(x,y)=∣Jt(r,θ)∣p(r,θ),其中
T1(r,θ)=rcosθ=xT2(r,θ)=rsinθ=y
Jt(r,θ)=[cosθsinθ−rsinθrcosθ]=r
则有p(r,θ)=rp(x,y)
球坐标与笛卡尔坐标
T1(r,θ,ϕ)=rsinθcosϕ=xT2(r,θ,ϕ)=rsinθsinϕ=yT3(r,θ,ϕ)=rcosθ=z
则p(x,y,z)=∣Jt(r,θ,ϕ)∣p(r,θ,ϕ),其中
Jt(r,θ,ϕ)=⎣⎡sinθcosϕsinθsinϕcosθrcosθcosϕrcosθsinϕ−rsinθ−rsinθsinϕrsinθcosϕ0⎦⎤=r2sinθ
则有p(r,θ,ϕ)=r2sinθp(x,y,z)。
立体角与球坐标
立体角的定义为在单位圆上投影的面积,在球坐标中有dω=sinθdθdϕ成立
因此基于物理Lambertion中的∫Ωf(ωi,ωo,p)cosθdω=1, 可得f(ωi,ωo,p)=∫02πdϕ∫02πcosθsinθdθ1=π1
若定义在某区域Ω上的概率为Pr{ω∈Ω}=∫Ωp(ω)dω,也有Pr{(θ,ϕ)∈Ω′}=∫Ω′p(θ,ϕ)dθdϕ
因此
p(θ,ϕ)dθdϕ=p(ω)dω
p(θ,ϕ)=sinθp(ω)
半球上立体角均匀采样
要对单位半球做关于立体角的均匀采样,则p(ω)=2π1,根据上文中与球坐标关系,p(θ,ϕ)=2πsinθ。
则有两独立同均匀分布随机变量(ξ,ψ)∈[0,1],要转换成满足半球上均匀分布的球坐标表示。
p(θ)=∫02πp(θ,ϕ)dϕ=sinθ,p(ϕ)=∫02πp(θ,ϕ)dθ=2π1
p(θ∣ϕ)=p(ϕ)p(θ,ϕ)=sinθ,p(ϕ∣θ)=p(θ)p(θ,ϕ)=2π1
这里很明显可以看出来θ,ϕ为两个独立随机变量
Pr{θ′⩽θ}=∫0θp(θ)dθ=1−cosθ,Pr{ϕ′⩽ϕ}=∫0ϕp(ϕ)dϕ=2πϕ
应用反CDF变换法则,P−1(θ)=1−arccosθ,P−1(ϕ)=2πϕ,因此
θ=arccos(1−ξ)=arccosξϕ=2πψ
由于球坐标不容易在计算机中表示,因此转换为笛卡尔表示
x=sinθcosϕ=1−ξ2cos2πψy=sinθsinϕ=1−ξ2sin2πψz=cosθ=ξ
同理可推证球上立体角均匀采样
x=2ξ(1−ξ)cos2πψy=2ξ(1−ξ)sin2πψz=1−2ξ
下图为半球上均匀采样的结果与完整球上均匀采样的结果
单位圆上的均匀采样
要根据面积对单位圆上进行均匀采样,p(x,y)=π1,则p(r,θ)=rp(x,y)。
p(θ)=∫01πrdr=2π1,p(r∣θ)=p(θ)p(r,θ)=2r
则他们对于的CDF为P(θ)=∫0θp(θ)dθ=2πθ,P(r∣θ)=∫0rp(r∣θ)dr=r2
求出其对应反函数P−1(θ)=2πθ,P−1(r∣θ)=r
若有两满足在[0,1]上均匀分布的随机变量ξ,ψ有θ=2πξ,r=ψ
则转换回笛卡尔坐标结果为
x=ψcos2πξy=ψsin2πξ
这里r,θ也是两个独立的随机变量
PBRT中论述的Concentric Disk Sampling可以参见前文Depth of Field中的实现与可视化
基于Cosine函数的半球采样
这里使用基本的转换思路,p(ω)∝cosθ,因此p(ω)=πcosθ
有p(θ,ϕ)=πsinθcosθ,则有
p(θ)=∫02πp(θ,ϕ)dϕ=2sinθcosθ,p(ϕ∣θ)=p(θ)p(θ,ϕ)=2π1
可得CDF为
P(θ)=∫0θp(θ)dθ=21−cos2θ,P(ϕ∣θ)=∫0ϕp(ϕ∣θ)dϕ=2πϕ
应用反CDF得P−1(θ)=21arccos(1−2θ),P−1(ϕ∣θ)=2πϕ
θ=21arccos(1−2ξ)ϕ=2πψ
转换为笛卡尔下的表示为
x=sinθcosϕ=sin(21arccos(1−2ξ)))cos2πψy=sinθsinϕ=sin(21arccos(1−2ξ)))sin2πψz=cosθ=cos(21arccos(1−2ξ))
PBRT中给出了另一种计算办法,将均匀分布在圆盘上的点投影到半球上,其结果就满足Cosine-Weighted。
以下给出证明
假定在圆盘上的极坐标分布为p(r,ϕ)=πr(使用ϕ方便后续将r对应为θ相关),p(r,ϕ)=∣Jt(r,θ)∣p(θ,ϕ)
r=sinθ=T1(r)ϕ=ϕ=T2(ϕ)
Jt(r,θ)=[cosθ001]=cosθ
即有p(θ,ϕ)=cosθp(r,ϕ)=πrcosθ=πsinθcosθ,和上述中得到的结果一样。
下图为两种方法产生的Cosine-Weighted对比
三角形均匀采样
PBRT中采用了等腰切两边为1的三角形特殊情况,不过以下计算办法可以变换回任何三角形
有p(u,v)=2(面积倒数),则有
p(u)=∫01−up(u,v)dv=2−2u,p(v∣u)=p(u)p(u,v)=1−u1P(u)=∫0up(u)du=2u−u2,P(v∣u)=∫0vp(v∣u)dv=1−uv
这里反变换CDF开根号时要注意到u,v∈[0,1]
因此有u=1−ξ,v=ξψ
下图中即为三角形上的均匀采样
根据二维分段函数分布采样
这里分段函数的采样即为离散随机变量,若有横向纵向各nu,nv个元素,函数上指定位置一点值为f(u,v),那么就有
If=∫v∫uf(u,v)dudv=nunv1∑i=0nu−1∑j=0nv−1f(ui,vj)p(u,v)=Iff(u,v)
而边缘概率密度可直接得到
p(u)=∫vp(u,v)dv=Ifnu1∑if(u,vi),p(v∣u)=p(u)p(u,v)=nu1∑if(u,vi)f(u,v)
之后利用CDF反变换,即PBRT中distribution1d的实现办法可完成对于p(u),p(v∣u)上的采样
此处效果可见前文中的二维分段函数采样的结果
圆锥均匀采样
类似于球上的均匀采样, 易证随机变量θ,ϕ相互独立
已知p(ω)=2π(1−cosθmax)1,则p(θ,ϕ)=2π(1−cosθmax)sinθ
p(θ)=∫02πp(θ,ϕ)dϕ=1−cosθmaxsinθ,p(ϕ)=∫02π2π(1−cosθmax)sinθdθ=2π1
P(θ)=∫0θ1−cosθmaxsinθdθ=1−cosθmax1−cosθ,P(ϕ)=∫0ϕ2π1dϕ=2πϕ
若有两随机变量xi,ψ,运用反变换可有(此处省略了θ,ϕ到笛卡尔的转换)
cosθ=1−ξ+ξcosθmax,ϕ=2πψ
下图中即为圆锥上的均匀采样